package com.sc.nft.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.UserInfo;
import com.sc.nft.entity.UserPrizeDrawRecords;
import com.sc.nft.entity.dto.MyGuessDTO;
import com.sc.nft.entity.dto.NumberQueryListDTO;
import com.sc.nft.entity.dto.UserBettingDTO;
import com.sc.nft.entity.vo.*;
import com.sc.nft.enums.PrizeDrawActivityRewardsEnum;

import java.util.ArrayList;
import java.util.List;
/**
 * 用户抽奖号码表服务接口
 *
 * @author Sun
 * @description 由 Mybatisplus Code Generator 创建
 * @since 2023-09-14 11:33:11
 */
public interface UserPrizeDrawRecordsService {


    /**
     * 用户下注
     *
     * @param userBettingDTO
     * @param userInfo
     */
    void userBetting(UserBettingDTO userBettingDTO, UserInfo userInfo);


    /**
     * 预创建验证
     *
     * @param userBettingDTO
     * @param userInfo
     * @return
     */
    List<String> creationVerify(UserBettingDTO userBettingDTO, UserInfo userInfo);
    /**
     * 我的竞猜
     *
     * @param myGuessDTO
     * @param user
     * @return
     */
    Page<UserPrizeDrawRecords> myGuess(MyGuessDTO myGuessDTO, UserInfo user);
    /**
     * 中奖名单
     *
     * @param id
     * @return
     */
    List<WinnersListVO> listWinners(Long id);
    /**
     * 查询中奖编号
     *
     * @param numberQueryListDTO
     * @return
     */
    List<NumberQueryListVO> numberQueryList(NumberQueryListDTO numberQueryListDTO);

    /**
     * 我的中奖结果
     * @param activityId
     * @return
     */
    List<MyListWinnersVO> myListWinners(Long activityId,UserInfo user);

    /**
     * 中奖名称(瓜分活动)
     * @param activityId
     * @return
     */
    List<ListOfWinnersVO> listOfWinners(Long activityId);

    /**
     * 获取中奖类型的用户列表
     * @param activityId
     * @param rewardsType
     * @param v1
     * @param v2
     * @param v3
     * @param v4
     * @param v5
     * @return
     */
    List<UserPrizeDrawRecords> getUserLotteryListByActivityIdAndTypeAndNumber(Long activityId, PrizeDrawActivityRewardsEnum rewardsType, Integer v1, Integer v2, Integer v3, Integer v4, Integer v5,ArrayList<Long> notInIds);

    /**
     * 修改用户为中奖
     * @param ids
     * @param type
     * @param name
     */
    Boolean updateWinPrizeLotteryAndTypeNameByIds(Long activityId,ArrayList<Long> ids, PrizeDrawActivityRewardsEnum type, String name);

    /**
     * 修改未中奖的用户
     * @param id
     * @param notInIds
     * @return
     */
    Boolean updateLosingLotteryAndTypeNameByIds(Long id, ArrayList<Long> notInIds);

    /**
     * 我的号码详情
     * @param id
     * @return
     */
    MyNumberVO myNumber(Long id);
}
